package com.picolov;

import static org.junit.Assert.*;

import java.util.HashMap;
import java.util.Map;

import org.junit.Test;

public class ContentCheckerTest {

	@Test
	public void testIsEqualsMapMatch() {
		Map<String, Object> map1 = new HashMap<String, Object>();
		map1.put("a", "1");
		map1.put("b", "2");
		map1.put("c", "3");
		Map<String, Object> map2 = new HashMap<String, Object>();
		map2.put("a", "1");
		map2.put("b", "2");
		map2.put("c", "3");
		assertTrue(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_LENGTH));
		assertTrue(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_KEY));
		assertTrue(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_CONTENT));
		
		map1 = new HashMap<String, Object>();
		map1.put("a", "1");
		map1.put("b", "2");
		map1.put("c", "3");
		map2 = new HashMap<String, Object>();
		map2.put("a", "1");
		map2.put("b", "2");
		map2.put("c", "3");
		map2.put("d", "4");
		assertFalse(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_LENGTH));
		assertFalse(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_KEY));
		assertFalse(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_CONTENT));
		
		map1 = new HashMap<String, Object>();
		map1.put("a", "1");
		map1.put("c", "3");
		map1.put("b", "2");
		map2 = new HashMap<String, Object>();
		map2.put("c", "3");
		map2.put("a", "1");
		map2.put("b", "2");
		assertTrue(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_LENGTH));
		assertTrue(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_KEY));
		assertTrue(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_CONTENT));
		
		map1 = new HashMap<String, Object>();
		map1.put("a", "1");
		map1.put("b", "2");
		map1.put("c", "3");
		map2 = new HashMap<String, Object>();
		map2.put("a", "1");
		map2.put("b", "2");
		map2.put("d", "3");
		assertTrue(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_LENGTH));
		assertFalse(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_KEY));
		assertFalse(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_CONTENT));
		
		map1 = new HashMap<String, Object>();
		map1.put("a", "1");
		map1.put("b", "2");
		map1.put("c", "3");
		map2 = new HashMap<String, Object>();
		map2.put("a", "1");
		map2.put("b", "2");
		map2.put("c", "4");
		assertTrue(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_LENGTH));
		assertTrue(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_KEY));
		assertFalse(ContentChecker.isEquals(map1, map2, ContentChecker.MAP_CONTENT));
	}
}
